/**
 * 根据属性名获取相应的数值
 * @param { Array } array 想要获取数据的数组
 * @param { Number, String, Boolean } data 需要对比的数据
 * @param { String } 需要对比的属性名
 * @param { String } 想要获取的属性名
 */
export function getValueByProp(array, data, prop, value) {
  for (let i = 0; i < array.length; i++) {
    if (array[i][prop] === data) {
      return value ? array[i][value] : array[i]
    }
  }
  return false
}

/**
 * 深拷贝
 */
export function deepCopy(obj) {
  if([null, undefined, NaN, false].includes(obj)) return obj
  return JSON.parse(JSON.stringify(obj))
}

// 判断arr是否为一个数组，返回一个bool值
function isArray (arr) {
  return Object.prototype.toString.call(arr) === '[object Array]'
}
// 深度克隆
export function deepClone (obj) {
	// 对常见的“非”值，直接返回原来值
	if([null, undefined, NaN, false].includes(obj)) return obj
  if(typeof obj !== 'object' && typeof obj !== 'function') {
  //原始类型直接返回
    return obj
  }
  var o = isArray(obj) ? [] : {}
  for(let i in obj) {
    if(obj.hasOwnProperty(i)){
      o[i] = typeof obj[i] === "object" ? deepClone(obj[i]) : obj[i]
    }
  }
  return o
}